import os

import openpyxl


def yqh():
    """
    合并多个目录中的term_status.csv文件。

    该函数遍历指定目录及其子目录，寻找名为term_status.csv的文件。
    它将这些文件的内容读取并合并到一个新的字典中，然后将这个字典的内容写入一个新的csv文件。
    """
    # 定义目录路径，用于查找term_status.csv文件
    dir = 'D:\\data\\accountfile\\yqh\\loanFile'
    # 列出目录中的所有子目录
    listdir = os.listdir(dir)
    # 初始化一个字典，用于存储合并后的数据
    new_data = {}
    # 初始化一个列表，用于存储要写入新文件的数据行
    new_fileline = []
    # new_title = '文件日期,账务日期,借据号,期序,开始日期,到期日期,结清日期,应还本金,已还本金（不含减免）,计划利息,应还利息,已还利息（不含减免金额）,利息余额,应还罚息,已还罚息（不含减免金额）,应还复息,已还复息,减免利息总金额,减免本罚总金额,减免利罚总金额,本期状态,逾期天数,已还提前还款手续费,当天借当天还利息'
    new_title = '文件日期,账务日期,借据号,交易日期,交易时间,交易流水号,期数,交易事件,交易金额,实收金额,本金发生额,利息发生额,本金罚息发生额,利息罚息（复息）发生额,已还提前还款手续费,当天借当天还利息,还款方式,优惠券抵扣利息金额,优惠券抵扣罚息金额,优惠券抵扣提前还款违约金'
    new_fileline.append((new_title + '\n').encode(encoding='utf-8'))
    # 遍历子目录
    for datedir in listdir:
        print(datedir)
        # 列出子目录中的所有文件
        file_dir = os.listdir(dir + '\\' + datedir)
        # 遍历文件
        for file in file_dir:
            # print(file)
            # 当找到term_status.csv文件时
            if file == 'repay_item.csv':
                # 打开文件并读取数据
                with open(dir + '\\' + datedir + "\\" + file, 'rb') as datafile:
                    while True:
                        data = datafile.readline()
                        if not data:
                            break
                        # 将读取的二进制数据转换为字符串
                        data_str = str(data.decode())
                        # 按逗号分割字符串
                        split = data_str.split(",")
                        # 构建键名
                        # key = split[1] + '_' + split[5]
                        # 将数据存储到字典中
                        # new_data[key] = datedir + ',' + data_str
                        if data_str.startswith("cur_date"):
                            continue
                        data_str = datedir + ',' + data_str
                        if not data_str.endswith('\n'):
                            data_str = data_str + '\n'
                        new_fileline.append(data_str.encode())
        print(len(new_fileline))
    # 定义新文件路径，用于存储合并后的数据
    new_file = 'D:\\data\\accountfile\\yqh\\repay_item_2024_09_05.csv'

    # 获取字典中的所有键
    # keys = new_data.keys()
    # 遍历字典中的键值对
    # for key in keys:
    #     new_value = new_data.get(key)
    # 将字典中的值转换为二进制格式，并添加到列表中
    #     if not new_value.endswith('\n'):
    #         new_value = new_value + '\n'
    #     new_fileline.append(new_value.encode())
    # 打开新文件，将数据写入
    # with open(new_file, 'wb') as newdatafile:
    #     newdatafile.writelines(new_fileline)

    workbook = openpyxl.Workbook()
    for line in new_fileline:
        strip__split = line.decode().strip().split(',')
        split_ = strip__split[1][0:6]
        print(split_)
        sheet = workbook.create_sheet(split_)
        sheet.append(line.decode().strip().split(','))

    workbook.save('repay_item_2024_09_05.xlsx')


def daichao():
    dir = 'D:\\data\\accountfile\\daichao\\loan'
    listdir = os.listdir(dir)
    new_data = {}

    new_fileline = []
    new_title = '文件日期,用信订单号,借据号,期次信息,当期应还日期,结清状态1.正常.2.逾期.4结清,应还本金,已还本金,应还利息,已还利息,应还罚息,已还罚息,应还手续费,已还手续费,应还逾期费,已还逾期费,应还违约金,已还违约金,应还账户管理费,已还账户管理费,应还服务费,已还服务费,结清日期,利息减免,罚息减免,费用减免,逾期费减免,违约金减免,账户管理费减免,服务费减免'
    new_fileline.append((new_title + '\n').encode(encoding='gb2312'))

    for datedir in listdir:
        print(datedir)
        file_dir = os.listdir(dir + '\\' + datedir)
        for file in file_dir:
            if file.endswith('REPAYMENTPLAN.txt'):
                with open(dir + '\\' + datedir + "\\" + file, 'rb') as datafile:
                    while True:
                        data = datafile.readline()
                        if not data:
                            break
                        data_str = str(data.decode())
                        split = data_str.split("|")
                        # if split[4] == '4':
                        key = split[1] + '_' + split[2]
                        new_data[key] = datedir + ',' + data_str.replace("|", ",")
        print(len(new_data.keys()))

    new_file = 'D:\\data\\accountfile\\daichao\\daichao_repayplan_new_gb2312_2025_02_19.csv'

    for key in new_data.keys():
        new_value = str(new_data.get(key))
        new_fileline.append(new_value.encode())

    with open(new_file, 'wb') as newdatafile:
        newdatafile.writelines(new_fileline)


def ximalaya():
    dir = 'D:\\data\\accountfile\\ximalaya\\loan(1)'
    listdir = os.listdir(dir)
    new_data = {}
    for datedir in listdir:
        print(datedir)
        file_dir = os.listdir(dir + '\\' + datedir)
        for file in file_dir:
            if file.endswith('REPAYMENTPLAN.txt'):
                with open(dir + '\\' + datedir + "\\" + file, 'rb') as datafile:
                    while True:
                        data = datafile.readline()
                        if not data:
                            break
                        data_str = str(data.decode())
                        print(data_str)


if __name__ == '__main__':
    daichao()
